package Alibaba;

import java.util.HashMap;

/**
 * @author zhangmin
 * @create 2022-01-23 14:13
 * 3. 无重复字符的最长子串
 * 给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串 的长度。
 * 滑动窗口
 */
public class lengthOfLongestSubstring3 {
    public int lengthOfLongestSubstring(String s) {
        HashMap<Character,Integer> window=new HashMap<>();
        int left=0,right=0;
        int res=0;
        while (right<s.length()){
            char c = s.charAt(right);
            right++;
            //更改窗口内的数据
            window.put(c,window.getOrDefault(c,0)+1);
            //收缩左窗口
            while (window.get(c)>1){
                char d = s.charAt(left);
                window.put(d,window.getOrDefault(d,0)-1);
                left++;
            }
            res=Math.max(res,right-left);
        }
        return res;
    }
}
